package com.py.credit.dao;

import com.py.credit.common.Page;
import com.py.credit.entity.GzObj;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface GzDao {

    /**
     * 规则列表高级查询
     *
     * @param jclb
     * @param showColumns
     * @param additionalColumns
     * @param conditions
     * @param page
     * @return
     */
    List<Map<String, Object>> selectByConditionForPage(@Param(value = "jclb") String jclb,
                                                       @Param(value = "columns") List<String> showColumns,
                                                       @Param(value = "additionalColumns") String[] additionalColumns,
                                                       @Param(value = "conditions") List<String> conditions,
                                                       @Param(value = "page") Page page);

    /**
     * 查询联合部门
     *
     * @param id
     * @param bm
     * @param name
     * @return
     */
    List<Map<String, Object>> selectForLhbm(@Param(value = "id") int id,
                                            @Param(value = "bm") String bm,
                                            @Param(value = "name") String name);

    /**
     * 获取所有规则
     *
     * @param bh
     * @param gz
     * @param gzzt
     * @param type
     * @return
     */
    List<GzObj> getListForAll(@Param(value = "bh") String bh,
                              @Param(value = "gz") String gz,
                              @Param(value = "gzzt") String gzzt,
                              @Param(value = "type") String type);

    /**
     * 添加规则
     *
     * @param gzObj
     * @return
     */
    int add(GzObj gzObj);

    /**
     * 插入规则措施
     *
     * @param gzId
     * @param csId
     * @param deptId
     * @param lyId
     */
    void insertGzAndCs(@Param(value = "gzId") String gzId,
                       @Param(value = "csId") String csId,
                       @Param(value = "deptId") String deptId,
                       @Param(value = "lyId") String lyId);

    /**
     * 插入时查询重名
     *
     * @param name
     * @param bm
     * @return
     */
    int selectSameBmAndName(@Param(value = "name") String name,
                            @Param(value = "bm") String bm);

    /**
     * 修改时查询重名
     *
     * @param id
     * @param name
     * @param bm
     * @return
     */
    int selectOtherSameBmAndName(@Param(value = "id") String id,
                                 @Param(value = "name") String name,
                                 @Param(value = "bm") String bm);

    /**
     * 根据id查找具体规则
     *
     * @param id
     * @return
     */
    GzObj selectById(@Param(value = "id") String id);

    /**
     * 修改规则
     *
     * @param gzObj
     */
    void modify(GzObj gzObj);

    /**
     * 修改规则状态
     *
     * @param ids
     * @param gzzt
     */
    void modifyGzzt(@Param(value = "ids") List<String> ids,
                    @Param(value = "gzzt") String gzzt);

    /**
     * 删除规则
     *
     * @param id
     * @param isDel
     */
    void deleteGz(@Param(value = "id") String id,
                  @Param(value = "isDel") String isDel);

    /**
     * 查询规则状态
     *
     * @param id
     */
    String selectGzzt(@Param(value = "id") String id);

    /**
     * 删除规则措施
     *
     * @param id
     */
    void deleteGzAndCs(@Param(value = "id") String id);

    String getGzNames(@Param(value = "cfbm") String cfbm,
                      @Param(value = "jclb") String jclb);

    GzObj selectByGzName(@Param(value = "gzName") String gzName);

    int selectCsIsExistByGzId(@Param(value = "gzId") int gzId,
                              @Param(value = "jclb") String jclb,
                              @Param(value = "type") String type);
}

